﻿<?xml version="1.0" encoding="utf-8"?>

<platform xmlns="http://metalx.org/Platform" namespace="http://metalx.org/Mos/6502/Operators">
	<processor>
		<operation name="Break" value="00"/>

		<operation name="NoOperation" value="EA"/>

		<operation name="CompareAccumulatorToImmediate8" value="C9"/>
		<operation name="CompareAccumulatorToImmediate8Address" value="C5"/>
		<operation name="CompareAccumulatorToImmediate8PlusXIndexAddress" value="D5"/>
		<operation name="CompareAccumulatorToImmediate16Address" value="CD"/>
		<operation name="CompareAccumulatorToImmediate16PlusXIndexAddress" value="DD"/>
		<operation name="CompareAccumulatorToImmediate16PlusYIndexAddress" value="D9"/>
		<operation name="CompareAccumulatorToImmediate8PlusXIndexPointerAddress" value="C1"/>
		<operation name="CompareAccumulatorToImmediate8PointerPlusYIndexAddress" value="D1"/>

		<operation name="CompareXIndexToImmediate8" value="E0"/>
		<operation name="CompareXIndexToImmediate8Address" value="E4"/>
		<operation name="CompareXIndexToImmediate16Address" value="EC"/>

		<operation name="CompareYIndexToImmediate8" value="C0"/>
		<operation name="CompareYIndexToImmediate8Address" value="C4"/>
		<operation name="CompareYIndexToImmediate16Address" value="CC"/>

		<operation name="IncrementImmediate8Address" value="E6"/>
		<operation name="IncrementImmediate8PlusXIndexAddress" value="F6"/>
		<operation name="IncrementImmediate16Address" value="EE"/>
		<operation name="IncrementImmediate16PlusXIndexAddress" value="FE"/>

		<operation name="IncrementXIndex" value="E8"/>

		<operation name="IncrementYIndex" value="C8"/>

		<operation name="DecrementImmediate8Address" value="C6"/>
		<operation name="DecrementImmediate8PlusXIndexAddress" value="D6"/>
		<operation name="DecrementImmediate16Address" value="CE"/>
		<operation name="DecrementImmediate16PlusXIndexAddress" value="DE"/>

		<operation name="DecrementXIndex" value="CA"/>

		<operation name="DecrementYIndex" value="88"/>

		<operation name="OrAccumulatorWithImmediate8" value="09"/>
		<operation name="OrAccumulatorWithImmediate8Address" value="05"/>
		<operation name="OrAccumulatorWithImmediate8PlusXIndexAddress" value="15"/>
		<operation name="OrAccumulatorWithImmediate16Address" value="0D"/>
		<operation name="OrAccumulatorWithImmediate16PlusXIndexAddress" value="1D"/>
		<operation name="OrAccumulatorWithImmediate16PlusYIndexAddress" value="19"/>
		<operation name="OrAccumulatorWithImmediate8PlusXIndexPointerAddress" value="01"/>
		<operation name="OrAccumulatorWithImmediate8PointerPlusYIndexAddress" value="11"/>

		<operation name="ExclusiveOrAccumulatorWithImmediate8" value="49"/>
		<operation name="ExclusiveOrAccumulatorWithImmediate8Address" value="45"/>
		<operation name="ExclusiveOrAccumulatorWithImmediate8PlusXIndexAddress" value="55"/>
		<operation name="ExclusiveOrAccumulatorWithImmediate16Address" value="4D"/>
		<operation name="ExclusiveOrAccumulatorWithImmediate16PlusXIndexAddress" value="5D"/>
		<operation name="ExclusiveOrAccumulatorWithImmediate16PlusYIndexAddress" value="59"/>
		<operation name="ExclusiveOrAccumulatorWithImmediate8PlusXIndexPointerAddress" value="41"/>
		<operation name="ExclusiveOrAccumulatorWithImmediate8PointerPlusYIndexAddress" value="51"/>

		<operation name="ShiftAccumulatorLeft" value="0A"/>
		<operation name="ShiftImmediate8AddressLeft" value="06"/>
		<operation name="ShiftImmediate8PlusXIndexAddressLeft" value="16"/>
		<operation name="ShiftImmediate16AddressLeft" value="0E"/>
		<operation name="ShiftImmediate16PlusXIndexAddressLeft" value="1E"/>

		<operation name="PullStatusFromStack" value="28"/>
		<operation name="PullAccumulatorFromStack" value="68"/>

		<operation name="PushStatusToStack" value="08"/>
		<operation name="PushAccumulatorToStack" value="48"/>

		<operation name="ClearCarryFlag" value="18"/>
		<operation name="ClearDecimalFlag" value="D8"/>
		<operation name="SetInterruptDisableFlag" value="78"/>
		<operation name="ClearInterruptDisableFlag" value="58"/>
		<operation name="ClearOverflowFlag" value="B8"/>

		<operation name="BranchToRelative8IfPositive" value="10"/>
		<operation name="BranchToRelative8IfNegative" value="30"/>
		<operation name="BranchToRelative8IfNotCarry" value="90"/>
		<operation name="BranchToRelative8IfCarry" value="B0"/>
		<operation name="BranchToRelative8IfEqual" value="F0"/>
		<operation name="BranchToRelative8IfNotEqual" value="D0"/>
		<operation name="BranchToRelative8IfZero" value="F0"/>
		<operation name="BranchToRelative8IfNotZero" value="D0"/>
		<operation name="BranchToRelative8IfNotOverflow" value="50"/>
		<operation name="BranchToRelative8IfOverflow" value="70"/>

		<operation name="JumpToImmediate16Address" value="4C"/>
		<operation name="JumpToImmediate8PointerAddress" value="6C"/>

		<operation name="CallImmediate16Address" value="20"/>
		<operation name="ReturnFromInterrupt" value="40"/>
		<operation name="ReturnFromSubroutine" value="60"/>

		<operation name="TestImmediate8AddressWithAccumulator" value="24"/>
		<operation name="TestImmediate16AddressWithAccumulator" value="2C"/>

		<operation name="AddImmediate8ToAccumulator" value="69"/>
		<operation name="AddImmediate8AddressToAccumulator" value="65"/>
		<operation name="AddImmediate8PlusXIndexAddressToAccumulator" value="75"/>
		<operation name="AddImmediate16AddressToAccumulator" value="6D"/>
		<operation name="AddImmediate16PlusXIndexAddressToAccumulator" value="7D"/>
		<operation name="AddImmediate16PlusYIndexAddressToAccumulator" value="79"/>
		<operation name="AddImmediate8PlusXIndexPointerAddressToAccumulator" value="61"/>
		<operation name="AddImmediate8PointerPlusYIndexAddressToAccumulator" value="71"/>

		<operation name="SubtractImmediate8FromAccumulator" value="E9"/>
		<operation name="SubtractImmediate8AddressFromAccumulator" value="E5"/>
		<operation name="SubtractImmediate8PlusXIndexAddressFromAccumulator" value="F5"/>
		<operation name="SubtractImmediate16AddressFromAccumulator" value="ED"/>
		<operation name="SubtractImmediate16PlusXIndexAddressFromAccumulator" value="FD"/>
		<operation name="SubtractImmediate16PlusYIndexAddressFromAccumulator" value="F9"/>
		<operation name="SubtractImmediate8PlusXIndexPointerAddressFromAccumulator" value="E1"/>
		<operation name="SubtractImmediate8PointerPlusYIndexAddressFromAccumulator" value="F1"/>

		<operation name="AndAccumulatorWithImmediate8" value="29"/>
		<operation name="AndAccumulatorWithImmediate8Address" value="25"/>
		<operation name="AndAccumulatorWithImmediate8PlusXIndexAddress" value="35"/>
		<operation name="AndAccumulatorWithImmediate16Address" value="2D"/>
		<operation name="AndAccumulatorWithImmediate16PlusXIndexAddress" value="3D"/>
		<operation name="AndAccumulatorWithImmediate16PlusYIndexAddress" value="39"/>
		<operation name="AndAccumulatorWithImmediate8PlusXIndexPointerAddress" value="21"/>
		<operation name="AndAccumulatorWithImmediate8PointerPlusYIndexAddress" value="31"/>

		<operation name="CopyImmediate8ToAccumulator" value="A9"/>
		<operation name="CopyImmediate8AddressToAccumulator" value="A5"/>
		<operation name="CopyImmediate8PlusXIndexAddressToAccumulator" value="B5"/>
		<operation name="CopyImmediate16AddressToAccumulator" value="AD"/>
		<operation name="CopyImmediate16PlusXIndexAddressToAccumulator" value="BD"/>
		<operation name="CopyImmediate16PlusYIndexAddressToAccumulator" value="B9"/>
		<operation name="CopyImmediate8PlusXIndexPointerAddressToAccumulator" value="A1"/>
		<operation name="CopyImmediate8PointerPlusYIndexAddressToAccumulator" value="B1"/>

		<operation name="CopyImmediate8ToXIndex" value="A2"/>
		<operation name="CopyImmediate8AddressToXIndex" value="A6"/>
		<operation name="CopyImmediate8PlusYIndexAddressToXIndex" value="B6"/>
		<operation name="CopyImmediate16AddressToXIndex" value="AE"/>
		<operation name="CopyImmediate16PlusYIndexAddressToXIndex" value="BE"/>

		<operation name="CopyImmediate8ToYIndex" value="A0"/>
		<operation name="CopyImmediate8AddressToYIndex" value="A4"/>
		<operation name="CopyImmediate8PlusXIndexAddressToYIndex" value="B4"/>
		<operation name="CopyImmediate16AddressToYIndex" value="AC"/>
		<operation name="CopyImmediate16PlusXIndexAddressToYIndex" value="BC"/>

		<operation name="CopyAccumulatorToImmediate8Address" value="85"/>
		<operation name="CopyAccumulatorToImmediate8PlusXIndexAddress" value="95"/>
		<operation name="CopyAccumulatorToImmediate16Address" value="8D"/>
		<operation name="CopyAccumulatorToImmediate16PlusXIndexAddress" value="9D"/>
		<operation name="CopyAccumulatorToImmediate16PlusYIndexAddress" value="99"/>
		<operation name="CopyAccumulatorToImmediate8PlusXIndexPointerAddress" value="81"/>
		<operation name="CopyAccumulatorToImmediate8PointerPlusYIndexAddress" value="91"/>

		<operation name="CopyXIndexToImmediate8Address" value="86"/>
		<operation name="CopyXIndexToImmediate8PlusYIndexAddress" value="96"/>
		<operation name="CopyXIndexToImmediate16Address" value="8E"/>

		<operation name="CopyYIndexToImmediate8Address" value="84"/>
		<operation name="CopyYIndexToImmediate8PlusYIndexAddress" value="94"/>
		<operation name="CopyYIndexToImmediate16Address" value="8C"/>

		<operation name="CopyAccumulatorToXIndex" value="AA"/>
		<operation name="CopyAccumulatorToYIndex" value="A8"/>
		<operation name="CopyStackPointerToXIndex" value="BA"/>
		<operation name="CopyXIndexToAccumulator" value="8A"/>
		<operation name="CopyXIndexToStackPointer" value="9A"/>
		<operation name="CopyYIndexToAccumulator" value="98"/>
	</processor>
</platform>